﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Nolineq
{
    public partial class ConfigForm : Form
    {
        public ConfigForm()
        {
            InitializeComponent();

            LoadConfig();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            FileStream fs = new FileStream("config.cfg", FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);

            int i;
            if (Int32.TryParse(tbSteps.Text, out i))
            {
                if (i > 0)
                    sw.WriteLine("steps=" + i);
                else
                {
                    sw.Close();
                    fs.Close();
                    MessageBox.Show("Neplatný počet kroků.");
                    return;
                }
            }
            else
            {
                sw.Close();
                fs.Close();
                MessageBox.Show("Neplatný počet kroků.");
                return;
            }

            if (Int32.TryParse(tbFloat.Text, out i))
            {
                if (i > 0 && i < 11)
                    sw.WriteLine("float=" + i);
                else
                {
                    sw.Close();
                    fs.Close();
                    MessageBox.Show("Počet desetinných míst může být 1-10.");
                    return;
                }
            }
            else
            {
                sw.Close();
                fs.Close();
                MessageBox.Show("Počet desetinných míst může být 1-10.");
                return;
            }

            sw.Close();
            fs.Close();
            this.Close();
        }

        /// <summary>
        /// Nacte nastaveni ulozene v souboru config.cfg.
        /// </summary>
        private void LoadConfig()
        {
            FileStream fs = null;
            StreamReader sr = null;

            try
            {
                // zkusime najit a otevrit config soubor
                fs = new FileStream("config.cfg", FileMode.Open);
                sr = new StreamReader(fs);

                string line = sr.ReadLine();

                string[] sep = new string[] { "=" };

                string[] tokens = line.Split(sep, StringSplitOptions.RemoveEmptyEntries);

                // nenasli jsme slovo steps
                if (tokens[0] != "steps")
                    tbSteps.Text = "1000000";
                // nasli jsme slovo steps
                else 
                { 
                    int i;
                    // hodnota steps neni int
                    if (Int32.TryParse(tokens[1], out i))
                    {
                        // i je platny pocet kroku
                        if (i > 0)
                            tbSteps.Text = tokens[1];
                        // i neni platny pocet kroku
                        else
                            tbSteps.Text = "1000000";
                    }
                    else
                        tbSteps.Text = "1000000";
                }

                line = sr.ReadLine();

                tokens = line.Split(sep, StringSplitOptions.RemoveEmptyEntries);

                // nenasli jsme slovo float
                if (tokens[0] != "float")
                {
                    tbFloat.Text = "5";
                }
                // nasli jsme slovo float
                else
                {
                    int i;
                    // hodnota float neni int
                    if (Int32.TryParse(tokens[1], out i))
                    {
                        // i je platny pocet kroku
                        if (i > 0 && i < 11)
                            tbFloat.Text = tokens[1];
                        // i neni platny pocet kroku
                        else
                            tbFloat.Text = "5";
                    }
                    else
                        tbFloat.Text = "5";
                }

                sr.Close();
                fs.Close();
            }
            catch (Exception)
            {
                if (sr != null) sr.Close();
                if (fs != null) fs.Close();

                tbSteps.Text = "1000000";
                tbFloat.Text = "5";
            }

            
        }
    }
}
